[iOS] 圧倒的捗り!クリーンアーキテクチャによる開発を爆速化してくれるKuriを使ってみた
はじめに
こんぬづは、正月&冬季休暇に入ってから渋谷周辺の素敵カフェでノマドしながら、ブログ書いたりアプリ書いたり充実している田中です。
今回はクリーンアーキテクチャによるiOSアプリ開発を爆速化してくれるKuriというCLIツールについて紹介します。
もくじ
クリーンアーキテクチャの問題点
クリーンアーキテクチャは役割を明確に分けて関心を分離することで、様々なメリットをもたらしてくれる良い設計です。しかし同時にその分割した役割が多いために、ファイル数やコード量が増えてしまうという問題点も抱えています。ファイルの生成とその分のソースコードを書くことに大変なコストがかかってしまうことは、実際にクリーンアーキテクチャによる実装を行ったことのある人ならば体感したことのあることだと思います。
この問題に対して解決策をもたらしてくれるのがKuriというCLIツールです。
Kuriとは?
bannzaiさんが開発したiOSクリーンアーキテクチャ向けコード自動生成ツールです。OSSとして公開されています。
今記事でも取り扱う内容として以下の作者様の書いたQiitaもございますので合わせてお読みください。
上記のまとめとの差別化として今記事では画像多め、環境構築詳しめに書いていこうと思います。
検証環境
この記事では以下の環境における解説をしていきます。
- Xcode 8.1
- Kuri 0.1.1
Kuriのセットアップ
GitHubからlatest versionをダウンロードする
今回はバージョン0.1.1がlatest versionになっていたので、こちらのリンク先から以下の画像のようにkuri.zipをダウンロードします。
ダウンロードしたkuriを/usr/local/bin/に移動させる
先ほどダウンロードしたkuri.zipをダブルクリックすると、kuriが解凍されます。
解凍されたkuriを/usr/local/bin/に移動させてコマンドライン上で実行できるようにします。以下のコマンドを実行することで/usr/local/bin/をファインダーで開くことができます。(そのままファインダーで該当箇所を探してもオーケーです)
$ open /usr/local/bin/
ファイルの移動が完了したら、これでkuriをコマンドライン上で使えるようになります。
Kuriを使ってみる
設定ファイルを生成する
Kuriを扱うためにはまずプロジェクトのルートディレクトリに以下の二つの設定ファイルを用意する必要があります
- Kuri.yml
- KuriTemplate
Kuri.ymlを編集することで生成するファイルのサフィックスをカスタムしたり、生成するファイルをどこのディレクトリに置くかなどの設定ができます。詳しくはこちら。
KuriTemplateはクリーンアーキテクチャの各役割に必要なソースコードのテンプレートを設定しているものになります。詳しくはこちら。
この二つのファイルを自動生成してくれるのがkuri setupというコマンド。プロジェクトのルートディレクトリで以下のようにコマンドを実行すると、Kuri.ymlとKuriTemplateを自動で生成してくれます。
$ kuri setup
これでKuriを使う準備が整いました。
ソースファイルを生成する
以下のコマンドを実行することで先ほど説明した設定ファイルをもとに、クリーンアーキテクチャの各役割のファイルとソースコードを自動で生成してくれます。
$ kuri generate <任意のファイルプレフィックス名>
例えばログイン機能に関する部分であれば以下のようになります。
$ kuri generate Login
これによって自動でXcodeプロジェクトの中にグループを作って、生成したファイルをそれぞれのグループに参照を追加してくれます。
まとめ
クリーンアーキテクチャのファイル数、コード量が多くてツライという問題を解決させてくれるKuriというCLIツールの紹介をしました。
これ、素晴らしすぎるーーー!!!
本当に素晴らしすぎる!ちょうど個人プロジェクトでクリーンアーキテクチャをがっつりと取り入れていたのですが、定型のコードやファイル作成を繰り返し行わなくてはいけなくてとてもツライ思いをしていました。このKuriを使えば、今後のクリーンアーキテクチャによる開発が爆速化しそうです!まだ公開されて間もないOSSですが、さらに一括renameや一括removeなどの機能が実装されていってくれると嬉しいと思いました。GitHubでスターをつけると、作者のbannzaiさんが喜んでさらに追加開発をしてくれるかもしれません。
クリーンアーキテクチャを導入するための障壁を取り払ってくれるOSSになっていくのではないかと期待大です。